package com.atguigu.pojo;


import java.math.BigDecimal;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

/**
 * @Author luoyin
 * @Date 14:53 2022/7/21
 * @Description 描述
 **/

public class Cart {
    private Integer totalCount;
    private Double totalAmount;
    private Map<Integer, CartItem> cartItemMap= new HashMap<>();

    //获取总数量
    public Integer getTotalCount() {
        int totalCount = 0;
        Collection<CartItem> cartItems = cartItemMap.values();
        for (CartItem cartItem : cartItems) {
            totalCount += cartItem.getCount();
        }
        this.totalCount = totalCount;
        return totalCount;
    }

    //获取总计
    public Double getTotalAmount() {
        BigDecimal totalAmountBigDecimal = new BigDecimal("0.0");
        Collection<CartItem> cartItems = cartItemMap.values();
        for (CartItem cartItem : cartItems) {
            Double amount = cartItem.getAmount();
            BigDecimal amountBigDecimal = new BigDecimal(amount + "");
            totalAmountBigDecimal=totalAmountBigDecimal.add(amountBigDecimal);
        }
        //this.totalAmount = totalAmountBigDecimal.doubleValue();
        return totalAmountBigDecimal.doubleValue();
    }

    public Map<Integer, CartItem> getCartItemMap() {
        return cartItemMap;
    }

    //指定商品数量加1
    public void cartItemIncreaseCount(Integer bookId){
        CartItem cartItem = cartItemMap.get(bookId);
        cartItem.countIncrease();
    }

    //指定商品数量减1
    public void cartItemDecreaseCount(Integer bookId){
        CartItem cartItem = cartItemMap.get(bookId);
        cartItem.countDecrease();
    }

    //指定商品修改数量
    public void updateCartItemCount(Integer bookId,Integer newCount){
        CartItem cartItem = cartItemMap.get(bookId);
        cartItem.setCount(newCount);
    }

    //添加新商品
    public void addBook2CartItem(Book book){
        Integer bookId = book.getBookId();
        if(cartItemMap.containsKey(bookId)){
            cartItemIncreaseCount(bookId);
        }else {
            CartItem cartItem = new CartItem();
            cartItem.setBookId(book.getBookId());
            cartItem.setBookName(book.getBookName());
            cartItem.setImgPath(book.getImgPath());
            cartItem.setCount(1);
            cartItem.setPrice(book.getPrice());
            cartItemMap.put(bookId,cartItem);
        }
    }

    //移除指定商品
    public void removeCartItem(Integer bookId){
        cartItemMap.remove(bookId);
    }
    //
}
